//
//  MKUITabBarItemViewContainerCollectionView.h
//  MKUI
//	使用 UICollectionView 实现的左右滚动的页签容器视图.如果所有页签的宽度不超过外层容器时,每个页签将等分外层容器,否则流布局每个页签
//  Created by sushangjin on 16/3/29.
//  Copyright © 2016年 sushangjin. All rights reserved.
//

#import "MKUITabBarItemContainer.h"
#import "MKUICollectionView.h"
NS_ASSUME_NONNULL_BEGIN
@interface MKUITabBarItemViewContainerCollectionView : MKUITabBarItemContainer<UICollectionViewDelegateFlowLayout>
@property(nonatomic,strong,nullable) MKUICollectionFlowLayoutView *collectionView;

//tabBarItem标签显示单元格，默认是MKUITabBarItemCollectionViewCell.变更时，不会刷新UI，需要手动调用reload。注意，cell类变更，可能会导致标签容器高度变更。
@property(nonatomic,assign) Class itemCollectionCellClass;

//分隔线的显示类，nil代表不要显示分隔线。值变更时，不会主动刷新UI，需要手机调用reload方法。可选值为MKUITabBarItemSeparatorView,默认为nil。
@property(nonatomic,assign,nullable) Class separatorViewClass;

//tabBarItem标签选中指示器视图类,nil代表不需要指示器。变更时不会刷新UI，需要调用reload刷新。默认是MKUITabBarItemIndicatorView
@property(nonatomic,assign,nullable) Class itemIndicatorViewClass;
@property(nonatomic,readonly,nullable) __kindof UIView *itemIndicatorView;

@property(nonatomic,assign) BOOL fillBounds;//是否填充满容器宽度，默认为YES

/// 根据滑动的进度，计算选中指示器的frame。默认frame的高度为self.height,宽度为itemContentRect结果值*progress
/// @param fromIndex 滚动开始页签位置
/// @param toIndex 滚动期望结束页签位置
/// @param progress 从from到to的完成进度，取值[0,1]
- (CGRect)itemIndicatorRectWithScrollFromIndex:(NSInteger)fromIndex to:(NSInteger)toIndex withProgress:(CGFloat)progress;

/// 返回指定位置的item单元格
/// @param index 位置
- (nullable __kindof UICollectionViewCell *)itemCollectionViewCellForIndex:(NSInteger)index;
/// 指定位置的标签，在self.collectionView坐标系，内容的展示区域。itemIndicatorRectWithScrollProgress:方法会根据这个结果进行计算。默认是返回Cell的frame
/// 如果cell为MKUITabBarItemCollectionViewCellBase，且itemIndicatorRect不为zero，则会返回itemIndicatorRect在collectionView坐标系中的值
/// @param index 指定位置
- (CGRect)itemContentRectForIndex:(NSInteger)index;
@end
NS_ASSUME_NONNULL_END

#import "MKUITabBarController.h"
NS_ASSUME_NONNULL_BEGIN
@interface MKUITabBarController(MKUITabBarItemViewContainerCollectionView)
@property(nonatomic,readonly,nullable) MKUITabBarItemViewContainerCollectionView *itemCollectionContainer;
@end
NS_ASSUME_NONNULL_END
